接着上篇来写《》
这篇主要完成以下事项:
下篇我们要完成下面三个任务:
1、模板的使用
2、基控制器BaseController的定义
3、session的使用
一、模板的使用
接着上篇文章,这里也是以article为例,在后面会把完整的代码发布到github上!
在article控制器里有三个Get方法,分别是:
1、article.tpl 列表
2、article-detail.tpl 详情
3、article-form.tpl 博客的发布与编辑
在控制器里:可以看上篇,在 控制器方法有写
this.Data["paginator"] = paginatorthis.Data["art"] = artthis.TplName = "article.tpl"
1、article.tpl模板
{ {config "String" "globaltitle" ""}} { {template "inc/meta.tpl" .}}{ {template "inc/head.tpl" .}}{ {if $.isLogin }}{ {end}} { {range $k,$v := .art}}{ {end}} { {if .paginator.HasPages}} { {end}}{ {$v.Title}}({ {date $v.Created}})
{
{$v.Summary}} { {if $.isLogin }}{
{if eq $v.Status 0}}{ {end}} 修改{ {end}}
在说模板中引用配置文件可以用{{config 类型 名称键 默认值}},这样可以 定义全局变量如网站名称等
模板中列表用rang方法来显示循环,下面有一个分页的程序,可以看一下
其它的模板类似,后续会发布到github上。
二、基控制器BaseController的定义
因为我们的博客没有独立的后台,在前台里可以发布和编辑的,在上面的模板中我们看到$.isLogin来判断!
那这个怎么定义了,看如下:
package controllersimport ( "github.com/astaxie/beego")type BaseController struct { beego.Controller isLogin bool}func (this *BaseController) Prepare() { userLogin := this.GetSession("userLogin") if userLogin == nil { this.isLogin = false } else { this.isLogin = true } this.Data["isLogin"] = this.isLogin}func (this *BaseController) Go404() { this.TplName = "404.tpl" return}
说明:我们在控制器里建立了一个base.go作为基类,每个控制器都继承这个控制器;让我们回顾一下前面控制器介绍的:
//添加blogtype AddArticleController struct { BaseController}
都继承这个控制器。在beego中,有个预处理的Prepare方法,这个方法会在其它方法执行前操作,可以用作用户登录验证之类的。在基类中也重定义了一个参数isLogin来验证是否登录。这样在每个控制器都可以引用这个变量,上面的模板中也有引用。
三、session 的使用
在上面的控制器中,大家也看到session的使用。session有最基本的三个方法:
在获取session的时候,大家要注意一下,类型要进行转换:
strn := this.GetSession("uploadMultiName")strn = strings.Trim(strn.(string), "||")
记得用.string来进行转换,其它类型也这样的,不能直接string来进行转换。
当然session要记得开启,可以在配置文件中开启。
beego默认是memory存储,当然你可以使用其它的file,memcache,redis,mysql等,这里介绍使用file的使用
sessionon = true#sessionprovider = memorysessionprovider = filesessionproviderconfig = "./tmp"sessiongcmaxlifetime = 31536000sessioncookielifetime = 31536000
在这里说明一下,新版中
SessionSavePath
已经被sessionproviderconfig替换掉了,官方文档也没有更新,在此特意说明一下,不替换的话,file指定目录会不启作用,会在根目录生成hash目录。
好了,今天到此结束,下篇会说:
1、第三方工具方法的定义
2、mysql全局的定义及全局初始化方法定义与使用
3、在模板中如何使用自己方法
- SetSession(name string, value interface{})
- GetSession(name string) interface{}
- DelSession(name string)